package day8;
/*
* 构造方法的创建和使用
* */
public class Demo {
    public static void main(String[] args) {
        //对象创建时构造方法执行，不需要特别调用
        //对象创建必须和构造方法保持一直，如果是有参构造方法，只能创建有参对象，如果是无参构造，只能创建无参构造对象
        //每次创建对象都会调用相关的构造方法
        Person person = new Person("张三",18);

        Person person3 = new Person("李四",18);

        //有对应的构造方法，可以创建对应对象
        Person person1 = new Person();

        //构造方法可以使用任意的权限修饰符修饰，但是使用private修饰的构造方法没法创建对应的对象
//        Person person2 = new Person("德华");

//        person.speak();
    }
}

class Person{

    //姓名
    private String name;

    //年龄
    private int age;

    //构造方法，没有返回值，方法名称和类名相同
    //类中默认有无参构造方法，但是如果显式的创建了构造方法，默认的构造方法就会消失
    public Person(String name,int age){
        System.out.println("Person构造方法执行");

        this.name = name;

        this.age = age;
    }
    //一个类中可以有多个互为重载的构造方法
    public Person(){
        System.out.println("无参构造方法");
    }

    private Person(String name){

        System.out.println("单参构造方法");

        this.name = name;

    }



    //speak,个人介绍
    public void speak(){
        System.out.println("姓名:"+name+",年龄:"+age);
    }


}
